package org.yaac.server.delegate;

import java.util.Collection;
import java.util.Map;
import java.util.Set;

import com.google.appengine.api.memcache.ErrorHandler;
import com.google.appengine.api.memcache.Expiration;
import com.google.appengine.api.memcache.MemcacheService.IdentifiableValue;
import com.google.appengine.api.memcache.MemcacheService.SetPolicy;
import com.google.appengine.api.memcache.Stats;

public interface MemcacheServiceDelegate {

	public abstract void clearAll();

	public abstract boolean contains(Object arg0);

	public abstract boolean delete(Object arg0, long arg1);

	public abstract boolean delete(Object arg0);

	public abstract <T> Set<T> deleteAll(Collection<T> arg0, long arg1);

	public abstract <T> Set<T> deleteAll(Collection<T> arg0);

	public abstract Object get(Object arg0);

	public abstract <T> Map<T, Object> getAll(Collection<T> arg0);

	public abstract ErrorHandler getErrorHandler();

	public abstract IdentifiableValue getIdentifiable(Object arg0);

	public abstract String getNamespace();

	public abstract Stats getStatistics();

	public abstract Long increment(Object arg0, long arg1, Long arg2);

	public abstract Long increment(Object arg0, long arg1);

	public abstract <T> Map<T, Long> incrementAll(Collection<T> arg0, long arg1, Long arg2);

	public abstract <T> Map<T, Long> incrementAll(Collection<T> arg0, long arg1);

	public abstract <T> Map<T, Long> incrementAll(Map<T, Long> arg0, Long arg1);

	public abstract <T> Map<T, Long> incrementAll(Map<T, Long> arg0);

	public abstract boolean put(Object arg0, Object arg1, Expiration arg2, SetPolicy arg3);

	public abstract void put(Object arg0, Object arg1, Expiration arg2);

	public abstract void put(Object arg0, Object arg1);

	public abstract void putAll(Map<?, ?> arg0, Expiration arg1);

	public abstract void putAll(Map<?, ?> arg0);

	public abstract <T> Set<T> putAll(Map<T, ?> arg0, Expiration arg1, SetPolicy arg2);

	public abstract boolean putIfUntouched(Object arg0, IdentifiableValue arg1, Object arg2, Expiration arg3);

	public abstract boolean putIfUntouched(Object arg0, IdentifiableValue arg1, Object arg2);

	public abstract void setErrorHandler(ErrorHandler arg0);

}